﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Data;
using System.Web.UI.WebControls;
using vudu.EnlaceDatos.SqlServer;
using vudu.Logica.Clases;
using vudu.PaginasWeb.G6Pensum;

namespace vudu.PaginasWeb.G6Pensum
{
    public partial class AgregarMateriasPensum : System.Web.UI.Page
    {
        static int idPensum2;
        List<Materia> miListaMateria = new List<Materia>();

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                string miRol = (string)Session["rol"];
                if (miRol != "Escuela")
                    Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");
                Escuela miEscuela = (Escuela)Session["Usuario"];
                nombreEscuela.Text = miEscuela.NombreEscuela;
                Session["idMiEscuela"] = "Escuela: "+miEscuela.IdEscuela;
            }
            catch
            {
                //mensaje.Text = "Error: no se puede conectar con la base de datos";
                //mensaje.CssClass = "mensaje";
                ///mensaje.Visible = true;
            }
            if (!IsPostBack)
            {
                int idPensum = (int)Session["idPensum"];
                idPensum2 = idPensum;
                SqlServerPensum miServer = new SqlServerPensum();
                List<Materia> miListaMateria = new List<Materia>();

                miListaMateria = miServer.materiasSinPensumSeleccionado(idPensum);

                GridView1.DataSource = cargarMateriaTabla(miListaMateria);
                GridView1.DataBind();
            }
        }
        //Este metodo se encarga de llenar el GridView con las materias que se desean agregar al Pensum
        public DataTable cargarMateriaTabla(List<Materia> listaMateria)
        {
            // Generar la DataTable de la lista de materias
            DataTable table3 = new DataTable();
            //Crea las columnas de la tabla en el GridView
            table3.Columns.Add("Materia", typeof(string));
            table3.Columns.Add("Codigo", typeof(string));
            //Se recorre la lista de materias para ir asignandolas por fila
            for (int indiceDeMaterias = 0; indiceDeMaterias < listaMateria.Count; indiceDeMaterias++)
            {
                table3.Rows.Add(listaMateria[indiceDeMaterias].Nombre, listaMateria[indiceDeMaterias].Codigo);
            }

            return table3;
        }

        //Este metodo devuelve las materias que fueron seleccionadas por medio del checkbox
        public List<Materia> RecorrerGridView1()
        {
            List<Materia> listaMateriaNueva = new List<Materia>();
            //Se recorre todo el GridView por fila
            foreach (GridViewRow row in GridView1.Rows)
            {
                Materia materia = new Materia();
                //Se declara un CheckBox que buscara el identificador del checkbox por fila
                CheckBox materiaCheckeada = row.FindControl("chkSeleccionEscoger") as CheckBox;
                //Si el checkbox esta chequeado se guardan los datos de la materia en el objeto miMateria
                //y se guardan en una lista de materias
                if (materiaCheckeada.Checked)
                {
                    materia.Nombre = row.Cells[1].Text;
                    materia.Codigo = Convert.ToInt32(row.Cells[2].Text);
                    listaMateriaNueva.Add(materia);
                }
            }
            //Retonar la lista de materias a agregar
            return listaMateriaNueva;
        }
        //Metodo que se activa al presionar el boton de Aceptar 
        public void Button1_Click(object sender, EventArgs e)
        {
            //Se llama a recorrer GridView1 para saber que materias fueron seleccionadas
            miListaMateria = RecorrerGridView1();
            //Se pasan la lista de materias y el id del Pensum a traves del session para usarlos en las siguientes vistas
            Session["materia"] = miListaMateria;
            Session["idPensum2"] = idPensum2;
            Response.Redirect("AgregarMateriasPensum1.aspx");           
        }

        protected void MateriasSin_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}